集合 -> 无序,不重复 -> 可变的数据类型,但是里面的元素必须是不可变的数据类型
1. 创建集合
- 普通创建
set1 = {1, 2, 3, 4}
- set() 创建
set1 = set({1, 2, 3, 4})
1. 增
- .add('xxx')
set1 = set()
set1.add('添加')
print(set1) # {'添加'}
- .update(可迭代对象) -> 迭代添加(循环添加) -> 类似列表中的 extend
set1 = set()
set1.update('Kevin') # {'v', 'K', 'e', 'i', 'n'}
set1.update([1, 2, 3]) # {1, 2, 3}
set1.update([1, 2, 3], [4, 5, 6]) # {1, 2, 3, 4, 5, 6}
set1.update({'k1': 1, 'k2': 2}) # {'k2', 'k1'}
2. 删
- .pop() -> 随机删除
set1 = {'Kevin', 'AGA', 'Eric'}
set1.pop() # 返回值 Kevin
print(set1) # {'Eric', 'AGA'}
- remove() -> 按元素删除
set1 = {'Kevin', 'AGA', 'Eric'}
set1.remove('AGA')
print(set1) # {'Kevin', 'Eric'}
- .clear() -> 清空
set1 = {'Kevin', 'AGA', 'Eric'}
set1.clear()
print(set1) # set()
- del dict -> 彻底从内存中删除该集合
set1 = {'Kevin', 'AGA', 'Eric'}
del set1
3. 交集 -> 两个集合中相同的元素
- & 简写
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
set3 = set1 & set2 # {4, 5}
- .intersection()
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
set3 = set1.intersection(set2) # {4, 5}
4. 反交集 -> 除了两个集合中相同的元素
- ^ 简写
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
set3 = set1 ^ set2 # {1, 2, 3, 6, 7, 8}
- .symmetric_difference()
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
set3 = set1.symmetric_difference(set2) # {1, 2, 3, 6, 7, 8}
5. 并集 -> 两个集合合并成一个
- | 简写
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
set3 = set1 | set2 # {1, 2, 3, 4, 5, 6, 7, 8}
- .union()
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
set3 = set2.union(set1) # {1, 2, 3, 4, 5, 6, 7, 8}
6. 差集 -> set1 - set2 -> set1 独有的元素而 set2 没有的
- -
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
set3 = set1 - set2 # {1, 2, 3}
- .difference()
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
set3 = set1.difference(set2) # {1, 2, 3}
7. 子集 -> set1 < set2 -> set1 里面的元素 set2 都有那么就说明 set1 是 set2 的子集
- <
set1 = {1, 2, 3, }
set2 = {1, 2, 3, 4, 5, 6}
print(set1 < set2) # True
- .issubset()
set1 = {1, 2, 3, }
set2 = {1, 2, 3, 4, 5, 6}
print(set1.issubset(set2)) # True
8. 超集 -> set2 > set1 -> set1 里面的元素 set2 都有那么就说明 set1 是 set2 的子集
- >
set1 = {1, 2, 3, }
set2 = {1, 2, 3, 4, 5, 6}
print(set2 > set1) # True
- .issuperset()
set1 = {1, 2, 3, }
set2 = {1, 2, 3, 4, 5, 6}
print(set1.issuperset(set2)) # True
9. 去重
li = [1, 2, 33, 33, 2, 1, 4, 5, 6, 6]
li = list(set(li)) # [1, 2, 33, 4, 5, 6]
10. 将集合改变成不可变的数据类型 -> 只能只读
- frozenset()
set1 = {1, 2, 3}
f = frozenset(set1) # frozenset({1, 2, 3})
f2 = frozenset('Kevin') # frozenset({'n', 'K', 'e', 'i', 'v'})